{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "#本章需导入的模块\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "from pylab import *\n",
    "import matplotlib.cm as cm\n",
    "import warnings\n",
    "warnings.filterwarnings(action = 'ignore')\n",
    "%matplotlib inline\n",
    "plt.rcParams['font.sans-serif']=['SimHei']  #解决中文显示乱码问题\n",
    "plt.rcParams['axes.unicode_minus']=False\n",
    "from mpl_toolkits.mplot3d import Axes3D\n",
    "from sklearn.datasets import make_circles\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.metrics import zero_one_loss,r2_score,mean_squared_error\n",
    "import sklearn.neural_network as net"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, '平方损失值')"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "data=pd.read_excel('北京市空气质量数据.xlsx')\n",
    "data=data.replace(0,np.NaN)\n",
    "data=data.dropna()\n",
    "data=data.loc[(data['PM2.5']<=200) & (data['SO2']<=20)]\n",
    "X=data[['SO2','CO','NO2','O3']]\n",
    "Y=data['PM2.5']\n",
    "X_train, X_test, Y_train, Y_test = train_test_split(X,Y,train_size=0.70, random_state=123)\n",
    "\n",
    "acts=['relu','logistic']\n",
    "lts=['-','-.']\n",
    "for lt,act in zip(lts,acts):\n",
    "    NeuNet=net.MLPRegressor(activation=act,random_state=123,hidden_layer_sizes=(100,))\n",
    "    NeuNet.fit(X_train,Y_train)\n",
    "    Y_pred=NeuNet.predict(X_test)\n",
    "    plt.plot(NeuNet.loss_curve_,label=act+\"(测试1-R方=%.2f)\"%(1-r2_score(Y_test,Y_pred)),linestyle=lt)\n",
    "\n",
    "NeuNet=net.MLPRegressor(activation='relu',random_state=123,hidden_layer_sizes=(100,50))\n",
    "NeuNet.fit(X_train,Y_train)\n",
    "Y_pred=NeuNet.predict(X_test)\n",
    "plt.plot(NeuNet.loss_curve_,label=\"四层网络relu激活(测试1-R方=%.2f)\"%(1-r2_score(Y_test,Y_pred)),linestyle='--')\n",
    "plt.legend()\n",
    "plt.title(\"ReLu和Logistic激活函数的损失对比\")\n",
    "plt.xlabel(\"迭代次数\")\n",
    "plt.ylabel(\"平方损失值\")\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "说明：这里基于空气质量监测数据，采用多层网络预测PM2.5浓度。\n",
    "1、利用MLPRegressor函数实现基于多层网络的回归预测。\n",
    "2、MLPRegressor对象有很多属性，其中loss_curve_存储了各次迭代时的损失值。此外还有coefs_、intercepts_等，分别存储各个节点的连接权重和偏差权重。"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
